/*
 * Copyright (c) Huawei Technologies Co., Ltd. 2023. All rights reserved.
 * enclave handle function
 */
#ifndef SERVER_RUN_H
#define SERVER_RUN_H
#include <stddef.h>
#include "qingtian.h"
// 启动服务端并初始化
int server_init(char *ip, int port);

// 关闭服务端并释放资源
void server_fini(void);

// handle_call_fun 是数据处理函数，它的真正输入时 host 发送过来的 *in_buf, size_t in_buf_len
// *out_buf 在 server_handle 中初始化为空，它的内存在 handle_call_fun 中申请，并且需要在 clean_buf_fun 释放
// *out_buf_len 在 server_handle 中初始化为 0，它在 handle_call_fun 中表示 *out_buf 申请的长度

typedef cc_enclave_result_t (*handle_call_ft)(const uint8_t *in_buf, size_t in_buf_len,
    uint8_t **out_buf, size_t *out_buf_len);
typedef void (*clean_buf_ft)(void *out_buf);
int server_handle(handle_call_ft handle_call_fun, clean_buf_ft clean_buf_fun);
#endif